package cn.lzy.taskmanagement.scheduled;

import cn.lzy.taskmanagement.util.DataUtils;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @Author: WeiKaiYe
 * @CreateTime: 2023-10-23  09:23
 */


@Service
public class ScheduledService {
    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    private Integer count1 = 1;
    private Integer count2 = 1;
    private Integer count3 = 1;
    private Integer count4 = 1;



    //fixedRate实现重复执行任务
    //代码块休眠5秒，10秒之后重复执行任务
/*    @Scheduled(fixedRate = 5000) //休息5秒
    public void fixedRateTest() {
        System.out.println("fixedRate 第" + (count1++) + "次执行===执行时间: " + dateFormat.format(new Date()));
        try {
            Thread.sleep(10000);   //代码10秒之后再执行
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }*/


    //fixedRate实现重复执行任务
    //代码块休眠15秒，15秒之后重复执行任务
/*    @Scheduled(fixedRate = 15000)
    public void fixedRateTest1() {
        System.out.println("fixedRate 第" + (count1++) + "次执行===当前执行时间===" + dateFormat.format(new Date()));
        try {
            Thread.sleep(15000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }*/


    //fixedDelay实现重复执行任务
    //代码块休眠5秒，10秒之后重复执行任务    时间打印总计隔10秒
/*    @Scheduled(fixedDelay = 5000)
    public void fixedDelayTest() {
        System.out.println("fixedDelay 第" + (count2++) + "次执行===执行时间: " + dateFormat.format(new Date()));
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e2) {
            e2.printStackTrace();
        }
    }*/


    //initialDelay实现重复执行任务
    //代码块第一次执行延迟10秒后再执行 休眠5秒，10秒之后重复执行任务
/*    @Scheduled(initialDelay = 10000, fixedRate = 5000)
    public void initialDelayTest() {
        System.out.println("initialDelay 第" + (count3++) + "次执行===执行时间: " + dateFormat.format(new Date()));
        try {
            Thread.sleep(10000);
        } catch (InterruptedException e3) {
            e3.printStackTrace();
        }
    }*/


    //initialDelay实现重复执行任务
    //代码块第一次执行延迟0秒后再执行 休眠5秒，5秒之后重复执行任务
    @Scheduled(initialDelay = 0, fixedRate = 5000)
    public void initialDelayTest1() {
        System.out.println("initialDelay 第" + (count3++) + "次执行===执行时间: " + dateFormat.format(new Date()));
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e3) {
            e3.printStackTrace();
        }
    }



/*    @Scheduled(cron = "0 * * * * * ")
    public void Tests() {
        System.out.println("cron 第" + (count4++) + "次执行===执行时间: " + dateFormat.format(new Date()));
    }*/
}
